Introdução

Neste laboratório, foram utilizadas as bibliotecas OpenCV2 e MatplotLib, dentro do ambiente de desenvolvimento do Google Colab, para desenvolvimento de atividades introdutórias, relativas ao Processamento Básico de Imagens e Vídeos, utilizando a linguagem Python.

Link para o ambiente Colab utilizado no desenvolvimento desta prática:

Abaixo, temos a importação das bibliotecas utilizadas ao longo do código utilizado nesta prática:

Parte 3: Processamento Básico nas Imagens e Vídeos

a) Apresentem as imagens originais e as versões em P&B delas;

Nesta primeira tarefa, inicialmente foi utilizada a biblioteca MatplotLib para obter algumas das propriedades de cada imagem, como: formato e quantidade de pixels.

Importante Observar que as imagens são computacionalmente representadas na forma matricial (vetores multi-dimensionais).

Além disso, com a mesma biblioteca foi possível plotar as imagens dos integrantes do grupo e seus respectivos avatares, dentro do ambiente do Google Colab, utilizando as funções:

  1. plt.imshow()
  2. plt.show()

O código utilizado e o resultado obtido, podem ser vistos abaixo:

Após a utilização da biblioteca Matplotlib, foi utilizada a biblioteca OpenCV2 para manipular as imagens originais, transformando a escala de cores RGB tradicional para a escala de tons de cinza.

Nesta parte, foi utilizada a função cv2_imshow, para visualizar o plot das imagens dentro do colab, desta forma, as imagens foram visulizadas com maiores dimensões, preservando a dimensão original de cada imagem.

O código utilizado e o resultado obtido, podem ser vistos abaixo:

b) Apresentem as imagens com duas resoluções diferentes cada;

Nesta tarefa, foi utilizada a biblioteca OpenCV2 para manipular as imagens originais, transformando as dimensões (largura e altura) das imagens tanto em escala RGB quanto em tons de cinza.

Nesta parte, foi utilizada a função cv.resize, para redimensionar as imagens originais, utilizando um fator de redução de 50% em relação à dimensão original.

O código utilizado e o resultado obtido, podem ser vistos abaixo:

Podemos notar que a imagem dos avatares, teve sua qualidade mais afetada pela redução de resolução, visto que o exemplar original possuía uma menor resolução, relativamente à imagem dos integrantes do grupo.

c) Apresentem os vídeos com mudança de resolução, 25% e 50% dos originais;

Nesta tarefa, inicialmente, foi utilizada a função b64encode().decode(), para decodificar os vídeos originais, de forma a possibilitar sua utilização dentro de um "envelope" HTML.

Envolvendo os vídeos decodificados, dentro deste "envelope", foi possível plotar os vídeos originais dentro do ambiente do Colab e assim, visualizá-los.

O código utilizado e o resultado obtido, podem ser vistos abaixo:

Após visualizar os vídeos originais, foi desenvolvida uma função para alterar a resolução dos vídeos, definida como: change_res(input_video,percent,out_name).

Esta função recebe como parâmetros o caminho para o vídeo de entrada (vídeo original), um percentual de redimensionamento e o nome para gravação do arquivo de saída. Como resultado, esta função retorna um envelope HTML, contendo o arquivo de saída para ser visualizado no Colab.

A função foi estruturada da seguinte forma:

  1. Primeiramente, a função obtém os parâmetros dos vídeos originais de dimensão (largura e altura) e multiplica pelo fator de redimensionamento.

  2. Após definir as novas dimensões, utilizamos o método cv.VideoWriter_fourcc, para definir a codificação do vídeo de saída, bem como os demais parâmetros para gravação do vídeo redimensionado.

  3. Após estas definições de gravação, aplica-se o método cv.resize(), para todos os frames do vídeo de entrada e ao final do procedimento, o vídeo redimensionado é gravado num arquivo de saída.

  4. O arquivo de saída é codificado em H.264, para possibilitar sua leitura em ambiente HTML5, utilizando: os.system("ffmpeg -i output.mp4 -vcodec libx264").

  5. O vídeo redimensionado e devidamente codificado é envolvido em um envelope HTML que é retornado pela função.

O código utilizado e o resultado obtido, podem ser vistos abaixo:

Vídeo Lento Redimensionado

Abaixo, temos o vídeo lento, redimensionado em 50% e 25% da resolução do vídeo original, respectivamente:

Vídeo Rápido Redimensionado

Abaixo, temos o vídeo rápido, redimensionado em 50% e 25% da resolução do vídeo original, respectivamente:

Conclusão

Conforme a realização das etapas descritas no relatório, foi possível aplicar técnicas de programação para processamento de imagens.

As bibliotecas matplotplib e OpenCV atuaram como frameworks aptos à manipulação de dados não estruturados, possibilitando a exploração de características e atributos de Visão Computacional, tais como layers RGB, qualidade e dimensionamento.

Desse modo, foi possível introduzir conceitos que de processamento de multimídia que são utilizados em diversas áreas da engenharia, como é o exemplo do Aprendizado de Máquina, com escopo de algoritmos de redes convolucionais capazes de interpretar esse tipo de informação.

AudioDescrição